package com.sourcetrip.arraylist;

/**
 * @author: ZhouBert
 * @date: 2020/11/17
 * @description:	ArrayList 中迭代器的并发修改异常
 * 结论：
 * 1.集合每次调用 add ，实际修改次数变量的值都会自增一次（modCount）
 * 2.在获取迭代器（list.iterator()）时，只会执行一次将实际修改集合的次数赋值给预期修改集合的次数；
 * 3.集合在删除元素的时候也会针对实际修改次数的变量进行自增的操作。（modCount）
 * 但是，有个特殊情况，当删除的元素位于倒数第二个时，不会出现并发修改异常（CurrentModifyException）！
 * 因为：
 * 调用 hasNext() ,光标的值和集合的长度一致，就会返回 false;
 * 导致不会再去调用 next(),所以不会报错！
 * ------
 * 迭代器的删除：
 * 1.迭代器调用 remove() 实际也是调用 集合的remove；
 * 2.but 在调用 remove() 中会每次给预期修改次数的变量赋值（modCount）
 */
public class IteratorTest01 {

	public static void main(String[] args) {

	}
}
